A data network is generally consisted of a network of nodes connected by physical (e.g., wires) and or non-physical (e.g., optical, radio-frequency) links. Each link may support a number of logical point-to-point channels. Each channel may be a bi-directional communication path for allowing commands and message data to flow between two connect nodes within the data network. Each channel may refer to a single point-to-point connection where message data may be transferred between two endpoints or systems. Data may be transmitted in packets including groups called cells or packets from source to destination often through intermediate nodes.
In many data networks, hardware and software may often be used to support asynchronous data transfers between two memory regions, often on different systems. Each system may correspond to a multi-processor system including one or more processors. Each system may serve as a source (initiator) system which initiates a message data transfer (message send operation) or a target system of a message passing operation (message receive operation). Examples of such a multi-processor system may include host servers providing a variety of applications or services, and I/O units providing storage oriented and network oriented I/O services.
Within the present disclosure, the sending of data in a form of data packets from sender-device-to-receiver-device will be used in providing discussions of an example background and/or example embodiments of the invention, although practice of the present invention is not limited thereto. Further, a fabric-based switching environment may be used in providing discussions of the example background and/or example embodiments of the invention, although practice of the present invention is not limited thereto.
Turning now to FIG. 1 for background discussions, a sender device SENDER sends data packets P1, P2, P3, . . . PN, PN+1 along a communication link L to a receiver device RECEIVER. The sender device may be any device, for example, may be chosen from a non-exhaustive listing of: a server, a host computer, a switch. Similarly, the receiver device may be any device, for example, may be chosen from the non-exhaustive listing of: a server, a target computer, a switch. Further, although only one input (PORT-R) and/or output (PORT-S) port is shown (for simplicity of discussion) with respect to the FIG. 1 sender device and receiver device, such devices have multiple input and/or output ports (as will become more apparent in discussion ahead). Many arrangements may be made to ensure that all data packets sent by a sender device are properly received at the receiver device. For example, as shown in FIG. 1, often, each port, e.g., a receiving port PORT-R on the receiver device, will have a BUFFER assigned thereto to store data packets, the BUFFER being of a predetermined size (e.g., capable of storing N data packets). It has been found in the researching of the present invention, that a predetermined buffer size can have a constraining effect on a length of the communication link which can be used with the resultant device. What is needed is a more versatile buffer arrangement which can better support variable communication link lengths and/or bandwidth.